import type {
  CollectionData,
  CombinedMonthlyStats,
  CombinedStats,
} from './model';

import type { ID, PageQuery, PageResult } from '#/api/common';

import { requestClient } from '#/api/request';

enum Api {
  collectionDataList = '/crawler/dataManager/queryByPage',
  getCombinedMonthlyStatsApi = '/crawler/dataManager/monthly-stats',
  getCombinedStatsApi = '/crawler/dataManager/combined-stats',
  getXinHuaImageApi = '/crawler/dataManager/getXinHuaImage',
  queryCnnByIdApi = '/crawler/dataManager/queryCnnById',
  queryXinHuaByIdApi = '/crawler/dataManager/queryXinHuaById',
  root = '/crawler/dataManager',
}

/**
 * 数据管理分页列表
 * @param params 请求参数
 * @returns 列表
 */
export function collectionDataList(params?: PageQuery) {
  return requestClient.get<PageResult<CollectionData>>(Api.collectionDataList, {
    params,
  });
}
/**
 * 新华网数据查询
 * @param params 请求参数
 * @returns 列表
 */
export function queryXinHuaById(params?: PageQuery) {
  return requestClient.get<PageResult<CollectionData>>(Api.queryXinHuaByIdApi, {
    params,
  });
}
/**
 * cnn数据查询
 * @param params 请求参数
 * @returns 列表
 */
export function queryCnnById(params?: PageQuery) {
  return requestClient.get<PageResult<CollectionData>>(Api.queryCnnByIdApi, {
    params,
  });
}

/**
 * cnn数据查询
 * @param params 请求参数
 * @returns 列表
 */
// export function getXinHuaImage(params?: PageQuery) {
//   return requestClient.get<PageResult<CollectionData>>(Api.getXinHuaImageApi, {
//     params,
//     responseType: 'blob',
//   }
// );

/**
 * 下载文件  返回为二进制
 * @param ossId ossId
 * @param onDownloadProgress 下载进度(可选)
 * @returns blob
 */
export function getXinHuaImage(imageId: ID) {
  return requestClient.get<Blob>(
    `${Api.getXinHuaImageApi}?imageId=${imageId}`,
    {
      responseType: 'blob',
      timeout: 30 * 1000,
      isTransformResponse: false,
    },
  );
}

/**
 * 获取综合统计信息
 * @returns 统计数据
 */
export function getCombinedStats() {
  return requestClient.get<CombinedStats>(Api.getCombinedStatsApi);
}
/**
 * 获取最近六个月的知识库与站点统计数据
 * @returns 统计月数据
 */
export function getCombinedMonthlyStats() {
  return requestClient.get<CombinedMonthlyStats>(
    Api.getCombinedMonthlyStatsApi,
  );
}
